package com.wqh.zeromq.inform;

import org.zeromq.SocketType;
import org.zeromq.ZContext;
import org.zeromq.ZMQ;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Subscriber {
    public static void main(String[] args) {
        startSubscriber();
    }

    private static void startSubscriber() {
        try (ZContext context = new ZContext()){
            //创建“发布/订阅”模式中的“订阅”的socket
            ZMQ.Socket subscriber = context.createSocket(SocketType.SUB);

            // 设置一个Socket标示,当subscriber重新连接之后可以从上次中断的地方读取到终断之后错过的数据
            //subscriber.setConnectRid(String.valueOf(new Random().nextInt(100))); // 在Java中暂时还不支持
            subscriber.connect("tcp://*:5555");//可连接多个服务器


            //设置订阅主题,只接受信息头为Weather的消息
            String topicName = "Weather";
            subscriber.subscribe(topicName.getBytes());
            while(!Thread.currentThread().isInterrupted()){
                String message = subscriber.recvStr(0);
                System.out.println(message);
            }
        }
    }
}
